package com.tanhua.dubbo.api;

import com.tanhua.domain.mongo.Publish;
import com.tanhua.domain.vo.PageResult;

import java.util.List;

public interface PublishApi {

    /**
     * 分页查询推荐动态
     *
     * @param userId
     * @param page
     * @param pagesize
     * @return
     */
    PageResult<Publish> findByRecommend(Long userId, int page, int pagesize);

    /**
     * 发布动态
     *
     * @param publish 动态信息
     */
    String save(Publish publish);

    /**
     * 查询好友的动态-当前用户的时间线
     *
     * @param page     页码
     * @param pagesize 查询几条
     * @param userId   用户id
     * @return 用户userId的好友动态
     */
    PageResult<Publish> findByTimeline(int page, int pagesize, long userId);

    /**
     * 查询相册-查询某一用户的相册（动态）
     *
     * @param page     页码
     * @param pagesize 查询几条
     * @param userId   用户id
     * @return userId的相册
     */
    PageResult findAlbumList(int page, int pagesize, Long userId);

    /**
     * 查询一条动态
     *
     * @param publishId 动态id
     * @return publishId对应的Publish对象
     */
    Publish findOnePublish(String publishId);

    /**
     * 根据id查询动态
     * @param publishId
     * @return
     */
    Publish findById(String publishId);

    /**
     * 分页查询动态列表
     * @param page 页码
     * @param pagesize 查询几条
     * @param uid 用户id
     * @param state 动态的审核状态
     * @return 分页查询结果
     */
    PageResult<Publish> findPublishList(int page, int pagesize, Long uid, String state);

    /**
     * 更新审核状态
     * @param publish 动态内容
     */
    void saveState(Publish publish);

    /**
     *  根据pid查询动态列表
     * @param pidList pid集合
     * @return 动态集合
     */
    List<Publish> findByPids(List<Long> pidList);


    PageResult<Publish> findPublishListByState(int page, int pagesize, Long uid, Integer state);

    /**
     * 更新审核状态
     * @param publish
     */
    void updateState(Publish publish);

    /**
     * s根据pid的集合，查询对应的动态集合
     * @param pidList pid集合
     * @return 对应的动态集合
     */
    List<Publish> findPublishByPids(List<Long> pidList);

    void updateStates(String publishId, int state);
}
